package com.liy.cloud.common.pw.service;

import com.liy.cloud.common.pw.entity.PwAccountListEntity;
import com.liy.cloud.common.pw.entity.PwAccountMainEntity;
import com.das.framework.common.service.IBaseService;

import java.util.List;

/**
 * @Author: liyang
 * @Date: 2018/7/20 11:03
 * @Description:  service - 管理票款
 **/

public interface PwAccountMainTicketMoneyService extends IBaseService<PwAccountMainEntity, String> {

    /*
     * @Author:  libs
     * @Date:    2018/7/6  16:20
     * @Description: 新增票款配发，出库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addAllocateTicketMoney(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/23  16:16
     * @Description: 作废票款配发
     * @params: accountId 要作废的单据编号
     **/
    void invalidAllocateTicketMoney(String accountId) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/10  17:21
     * @Description: 新增预收款，入库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addAdvanceReceived(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/23  16:41
     * @Description: 作废预收款
     * @params: accountId 要作废的单据编号
     **/
    void invalidAdvanceReceived(String accountId) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/11  17:10
     * @Description: 新增上交票款，入库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addHandIn(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/23  16:59
     * @Description: 作废上交票款
     * @params: accountId 要作废的单据编号
     **/
    void invalidHandIn(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/16  18:10
     * @Description: 新增登记短款补款
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addShortMoney(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /**
     * 功能描述：审核短款补款，出库操作
     * @author libs
     * @param
     * @return
     * @date  2019/4/10 11:21
     */
    void auditShortMoney(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/16  18:10
     * @Description: 作废短款补款
     * @params: accountId 要作废的单据编号
     **/
    void invalidShortMoney(String accountId) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/19  15:13
     * @Description: 新增异常票款登记，入库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addAbnormalMoney(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /*
     * @Author:  libs
     * @Date:    2018/7/23  17:50
     * @Description: 作废异常票款
     * @params: accountId 要作废的单据编号
     **/
    void invalidAbnormalMoney(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/20  10:50
     * @Description: 新增解行现金登记，出库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addPayingBankMoney(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    void auditPayingBankMoney(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/23  11:10
     * @Description: 作废解行现金单
     * @params: accountId 要作废的单据编号
     **/
    void invalidPayingBankMoney(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/20  10:50
     * @Description: 新增上日实际解行登记，上日实际解行单据仅仅是录入具体的解行情况结果，不涉及车站库存的变更。
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addRealPayingBank(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    void auditRealPayingBank(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/7/23  14:16
     * @Description: 作废上日实际解行单
     * @params: accountId 要作废的单据编号
     **/
    void invalidRealPayingBank(String accountId) throws Exception;

    //新增设备补币
    void addequReplenPlan(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    /**
     * 功能描述：审核设备补币
     * @author libs
     * @param
     * @return
     * @date  2019/3/17 17:09
     */
    void auditEquReplenPlan(String accountId) throws Exception;

    //作废设备补币
    void invalidequReplenPlan(PwAccountMainEntity mainEntity) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/8/3  15:56
     * @Description: 新增回收设备票款，入库操作
     * @params: mainEntity:主体单据   list:明细列表
     **/
    void addCollectEquipmentMoney(PwAccountMainEntity mainEntity, List<PwAccountListEntity> list) throws Exception;

    void auditCollectEquipmentMoney(String accountId) throws Exception;

    /**
     * @Author:  libs
     * @Date:    2018/8/3  15:58
     * @Description: 作废回收设备票款
     * @params: accountId 要作废的单据编号
     **/
    void invalidCollectEquipmentMoney(String accountId) throws Exception;

    /*
     * @Author:  liyang
     * @Date:    2018/8/2  14:16
     * @Description:查询  起始时间     终止时间内   售票员      单据种类     售票员配票款        type=23
     * @params:          startTime   endTime    sellerId   type       售票员上下班交票款   type=14
     **/
    List<PwAccountMainEntity> findStartAndEndTimeSellerIdMainEntity(PwAccountMainEntity mainEntity);

}
